﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using GestionePolveriLib.Facades;
using GestionePolveriLib.BL;

namespace GestionePolveri2.Editors
{
    public partial class ScaricoEditor : Form
    {
        public event EventHandler LoadData;

        private bool m_isClosable = true;
        private string m_function = null;

        private EditorStatus m_editorStatus = EditorStatus.Insert;
        private DateTime m_dataRegistrazione = DateTime.Now;

        public DateTime DataRegistrazione
        {
            get { return m_dataRegistrazione; }
            set { m_dataRegistrazione = value; }
        }

        public EditorStatus EditorStatus
        {
            get { return m_editorStatus; }
            set { m_editorStatus = value; }
        }

        public OperatorePrincipal Principal
        {
            get { return this.scaricoDettaglio1.Principal; }
            set
            {
                if (value != null)
                {
                    this.scaricoDettaglio1.Principal = value;
                }
                else
                {
                    throw new ArgumentNullException("Attenzione: Utente non impostato !");
                }
            }
        }

        public Movimento Movimento
        {
            get { return this.scaricoDettaglio1.Movimento; }
            set
            {
                if (value != null)
                {
                    this.scaricoDettaglio1.Movimento = value;
                }
            }
        }

        public string Funtion
        {
            set { m_function = value; }
        }

        public ScaricoEditor()
        {
            InitializeComponent();            
        }

        private void SetupButtons()
        {
            switch (EditorStatus)
            {
                case EditorStatus.Insert:
                    this.btnCancella.Visible = false;
                    this.btnOk.Visible = false;
                    this.scaricoDettaglio1.ClearControls();
                    break;
                case EditorStatus.Modifiy:
                    this.btnAdd.Visible = false;
                    break;
                default:
                    break;
            }
        }

        protected override void OnLoad(EventArgs e)
        {
            base.OnLoad(e);

            this.scaricoDettaglio1.InitializeControl();

            this.scaricoDettaglio1.LoadData += new EventHandler(scaricoDettaglio1_LoadData);

            SetupButtons();

            this.scaricoDettaglio1.DataRegistrazione = m_dataRegistrazione;
        }

        void scaricoDettaglio1_LoadData(object sender, EventArgs e)
        {
            if (LoadData != null)
            {
                LoadData(this, EventArgs.Empty);
            }
        }

        private void btnCancel_Click(object sender, EventArgs e)
        {
            this.Close();
            m_isClosable = true;           
        }

        private void btnOK_Click(object sender, EventArgs e)
        {
            m_isClosable = this.scaricoDettaglio1.Modify();

            if (m_isClosable)
            {
                this.Close();
            }
        }

        protected override void OnClosing(CancelEventArgs e)
        {
            e.Cancel = !m_isClosable;
        }

        private void btnCancella_Click(object sender, EventArgs e)
        {
            OperatorePrincipal m_OperatorePrincipale = (OperatorePrincipal)System.Threading.Thread.CurrentPrincipal;
            if (!m_OperatorePrincipale.IsInRole("Amministrazione"))
            {
                if (m_function == "C")
                {
                    MessageBox.Show("Funzione non abilitata per l'utente !");
                    return;
                }
            }

            if (MessageBox.Show("Stai cancellando uno scarico. Vuoi procedere ?", "Carico Movimenti", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == System.Windows.Forms.DialogResult.Yes)
            {
                m_isClosable = this.scaricoDettaglio1.Delete();

                if (m_isClosable)
                {
                    this.Close();
                }
            }
        }

        private void btnAdd_Click(object sender, EventArgs e)
        {
            m_isClosable = this.scaricoDettaglio1.Add();

            if (m_isClosable)
            {
                this.Close();
            }
        }
    }
}
